unit pnt_edt;

{$mode Delphi}

interface

uses
    Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
    StdCtrls, area_pnt;

type

    Tfm_pnt_edt = class(TForm)
        bt_coord_apply: TButton;
        bt_coord_cancel: TButton;
        lb_coord_x: TLabeledEdit;
        lb_coord_y: TLabeledEdit;
        // Обработчики событий
        procedure bt_coord_applyClick(Sender: TObject);
        procedure bt_coord_cancelClick(Sender: TObject);
    private
        // Признак редактирования точки
        pnts_modified: Boolean; 
    public
        function pnts_modify(var area_pnt_o: TDAPoint) :Boolean;
    end;

var
    fm_pnt_edt: Tfm_pnt_edt;

implementation

{$R *.lfm}

// Триггер применения изменений
procedure Tfm_pnt_edt.bt_coord_applyClick(Sender: TObject);
begin
    pnts_modified := True;
    fm_pnt_edt.Close();
end;

// Триггер отмены изменений
procedure Tfm_pnt_edt.bt_coord_cancelClick(Sender: TObject);
begin
    pnts_modified := False;
    fm_pnt_edt.Close();
end;

// Редактирование точки
function Tfm_pnt_edt.pnts_modify(var area_pnt_o: TDAPoint) :Boolean;
begin
    // Загрузка данных в текстовые поля
    lb_coord_x.Text := FloatToStr(area_pnt_o.get_rcoord.X);
    lb_coord_y.Text := FloatToStr(area_pnt_o.get_rcoord.Y);
    pnts_modified := False;

    // Открытие формы
    while True do
    begin
        fm_pnt_edt.ShowModal();
        if (lb_coord_x.Text = '') or (lb_coord_y.Text = '') then
            ShowMessage('Для применения изменений недостаточно данных.')
        else
            break;
    end;

    // Применение параметров
    if pnts_modified then
    begin
        area_pnt_o := TDAPoint.init(StrToFloat(lb_coord_x.Text),
                                    StrToFloat(lb_coord_y.Text));
    end;

    pnts_modify := pnts_modified;
end;

end.

